iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
0
IoT

homekit+pixhawk系列 第 11

MQTT 的QoS以及Security

  • 分享至 

  • xImage
  •  

MQTT的傳送模式相信大家都不陌生了,接下來要講解的是MQTT的QoS以及相關的安全性問題,總是有些內容不想被竊聽吧!那就跟著本篇看下去囉!

QoS

MQTT上的QoS指的並不是流量管制,而是Publisher是否確定一定把東西傳送至subscriber上,完成一次傳輸,而QoS則分三個等級:

  1. QoS 0:Publisher所送出的內容不一定保證每次都會傳送至Broker上,類似博士論文交給學校,但學校可能沒好好交給學校的圖書館那樣,這種模式適用於傳送大量且即時的資訊(比較不注重歷史紀錄的內容),例如即時監測房間的溫濕度。
  2. QoS 1:Publisher確實把內容送至Broker上,但不管是不是有把東西傳送至subscriber上,適合用於重複傳送也沒差,但是一定要傳送出去的資訊,例如房間的門被打開了,房間的門被關起來了這種感應器
  3. QoS 2:Publisher確實把內容傳送至subscriber上,且確定傳送一次,適合用於很重要很重要很重要,很重要所以說三次的很重要的資訊上,例如畢業證書,只發一次,不能重複發(重複發的那個叫做畢業證明書)

替MQTT加上帳號密碼吧!

MQTT的帳號密碼設定放置於/etc/mosquitto/mosquitto.conf上設定,以下為預設設定檔

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

加入這幾行

allow_anonymous false
password_file /etc/mosquitto/pwfile
acl_file /etc/mosquitto/aclfile

allow_anonymous指的是匿名存取,也就是不用帳號密碼
password_file指的是帳號密碼的檔案
acl_file指的是可以存取哪一個topic

使用mosquitto_passwd -c /etc/mosquitto/pwfile username會生成一個pwfile然後覆蓋掉之前的pwfile,詳情請用mosquitto_passwd --help

aclfile則可以這樣做
vim /etc/mosquitto/aclfile
然後輸入

user username
topic read mtopic/#

user username
topic write mtopic/#

這樣就代表username可以寫入以及讀取 mtopic底下所有的東西,這樣就可以管理好哪一個使用者有什麼權限讀取哪一個佈告欄,哪一個使用者有權限寫入佈告欄囉!


上一篇
arduino NFC讀卡機
下一篇
RFC1149
系列文
homekit+pixhawk30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言